#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}


void MainWindow::on_ai_in_clicked()
{
    QString model=ui->model_select->currentText();
    if(model=="模型选择")
    {
        QMessageBox::information(NULL, "警告", "请选择模型", QMessageBox::Yes);
    }
    //.py文件放在工程中的relase目录中
    Py_Initialize();//使用python之前，要调用Py_Initialize();这个函数进行初始化
    if (!Py_IsInitialized())  //判断是否初始化成功
    {
        printf("初始化失败！");
        return;
    }

    PyRun_SimpleString("import sys");  //导入python的sys系统库

    time_t nowtime;
    time(&nowtime);
    tm* t=localtime(&nowtime);

    QString prompt=ui->ai_input->toPlainText();

    if(prompt.isEmpty()){
        ui->ai_output->setText("请输入内容！");
        return;
    }

    PyObject * pModule = NULL;//声明变量
    PyObject * pFunc = NULL;
    pModule = PyImport_ImportModule("ollama");//这里是要调用的文件名hello.py，纯名字，不包含.py
    if (pModule == NULL)
    {
        qDebug() << "没找到";
        return;
    }

    pFunc = PyObject_GetAttrString(pModule, "call_ollama_api");//这里是要调用的函数名
    if(pFunc==NULL)
    {
        qDebug()<<"函数调用失败";
        return;
    }
    qDebug()<<prompt.toUtf8().constData();
    PyObject* args = Py_BuildValue("(s,s)",prompt.toUtf8().constData(),model.toUtf8().constData());//给python函数参数赋值
    PyObject* pResult = PyObject_CallObject(pFunc, args); //执行函数，获得返回值
    qDebug()<<"result"<<pResult;
    if (!pResult)
    {
        qDebug() << "获取结果失败！" << endl;
        return;
    }
    QString result = QString::fromUtf8(PyUnicode_AsUTF8(pResult));

    ui->ai_output->append("<img src=\"DeepSeek-icon.png\" />");
    ui->ai_output->append(result);
}
